﻿// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT License.
// See the LICENSE file in the project root for more information.

//
// Revision history:
//
// BD - May 2013 - Created this file.
//

namespace System.Linq.CompilerServices
{
    internal static class Constants
    {
        //
        // Note on compatibility:
        //
        //    For C#, the name generator (csharp\languageanalysis\lib) claims forward compatibility in
        //    its CreateSpecialNameChar function, relying on SpecialNameKindEnum with the following remark:
        //
        //       Don't change these numbers otherwise backwards compatibility will break
        //

        /// <summary>
        /// Prefix of closure class names generated by the C# compiler, a.k.a. display classes.
        /// </summary>
        internal const string CS_CLOSURE_PREFIX = "<>c__DisplayClass";

        /// <summary>
        /// Prefix of closure class names generated by the VB compiler.
        /// </summary>
        internal const string VB_CLOSURE_PREFIX = "_Closure$__";

        /// <summary>
        /// Prefix of anonymous type names generated by the C# compiler.
        /// </summary>
        internal const string CS_ANONYMOUS_PREFIX = "<>f__AnonymousType";

        /// <summary>
        /// Prefix of anonymous type names generated by the VB compiler.
        /// </summary>
        internal const string VB_ANONYMOUS_PREFIX = "VB$AnonymousType";

        /// <summary>
        /// Prefix of record type names generated by the RuntimeCompiler.
        /// </summary>
        internal const string RECORD_PREFIX = "<>a__RecordType";

        /// <summary>
        /// Prefix of transparent identifiers generated by the C# compiler.
        /// </summary>
        internal const string CS_TRANSPARENTIDENTIFIER_PREFIX = "<>h__TransparentIdentifier";
    }
}
